package com.frinder.robot.log;

import lombok.Builder;
import lombok.Getter;
import org.slf4j.Logger;
import org.slf4j.MDC;

import static com.frinder.robot.log.SplitRobotFileDiscriminator.ROBOT_KEY;

/**
 * @ClassName MyRobotLoggerWrapper
 * @Description //TODO
 * @Author frinder
 * @Date 2019/1/10 15:33
 * @Version 1.0
 */
@Builder
@Getter
public class MyRobotLoggerWrapper {

    private String robotName;
    private Logger logger;

    public boolean isDebugEnabled() {
        return logger.isDebugEnabled();
    }

    public void debug(String var1) {
        MDC.put(ROBOT_KEY, robotName);
        logger.debug(var1);
        MDC.remove(ROBOT_KEY);
    }

    public void debug(String var1, Object var2) {
        MDC.put(ROBOT_KEY, robotName);
        logger.debug(var1, var2);
        MDC.remove(ROBOT_KEY);
    }

    public void debug(String var1, Object var2, Object var3) {
        MDC.put(ROBOT_KEY, robotName);
        logger.debug(var1, var2, var3);
        MDC.remove(ROBOT_KEY);
    }

    public void debug(String var1, Object... var2) {
        MDC.put(ROBOT_KEY, robotName);
        logger.debug(var1, var2);
        MDC.remove(ROBOT_KEY);

    }

    public void debug(String var1, Throwable var2) {
        MDC.put(ROBOT_KEY, robotName);
        logger.debug(var1, var2);
        MDC.remove(ROBOT_KEY);
    }

    public boolean isInfoEnabled() {
        return logger.isInfoEnabled();
    }

    public void info(String var1) {
        MDC.put(ROBOT_KEY, robotName);
        logger.info(var1);
        MDC.remove(ROBOT_KEY);
    }

    public void info(String var1, Object var2) {
        MDC.put(ROBOT_KEY, robotName);
        logger.info(var1, var2);
        MDC.remove(ROBOT_KEY);
    }

    public void info(String var1, Object var2, Object var3) {
        MDC.put(ROBOT_KEY, robotName);
        logger.info(var1, var2, var3);
        MDC.remove(ROBOT_KEY);
    }

    public void info(String var1, Object... var2) {
        MDC.put(ROBOT_KEY, robotName);
        logger.info(var1, var2);
        MDC.remove(ROBOT_KEY);
    }

    public void info(String var1, Throwable var2) {
        MDC.put(ROBOT_KEY, robotName);
        logger.info(var1, var2);
        MDC.remove(ROBOT_KEY);
    }

    public boolean isWarnEnabled() {
        return logger.isWarnEnabled();
    }

    public void warn(String var1) {
        MDC.put(ROBOT_KEY, robotName);
        logger.warn(var1);
        MDC.remove(ROBOT_KEY);
    }

    public void warn(String var1, Object var2) {
        MDC.put(ROBOT_KEY, robotName);
        logger.warn(var1, var2);
        MDC.remove(ROBOT_KEY);
    }

    public void warn(String var1, Object... var2) {
        MDC.put(ROBOT_KEY, robotName);
        logger.warn(var1, var2);
        MDC.remove(ROBOT_KEY);
    }

    public void warn(String var1, Object var2, Object var3) {
        MDC.put(ROBOT_KEY, robotName);
        logger.warn(var1, var2, var3);
        MDC.remove(ROBOT_KEY);
    }

    public void warn(String var1, Throwable var2) {
        MDC.put(ROBOT_KEY, robotName);
        logger.warn(var1, var2);
        MDC.remove(ROBOT_KEY);
    }

    public boolean isErrorEnabled() {
        return logger.isErrorEnabled();
    }

    public void error(String var1) {
        MDC.put(ROBOT_KEY, robotName);
        logger.error(var1);
        MDC.remove(ROBOT_KEY);
    }

    public void error(String var1, Object var2) {
        MDC.put(ROBOT_KEY, robotName);
        logger.error(var1, var2);
        MDC.remove(ROBOT_KEY);
    }

    public void error(String var1, Object var2, Object var3) {
        MDC.put(ROBOT_KEY, robotName);
        logger.error(var1, var2, var3);
        MDC.remove(ROBOT_KEY);
    }

    public void error(String var1, Object... var2) {
        MDC.put(ROBOT_KEY, robotName);
        logger.error(var1, var2);
        MDC.remove(ROBOT_KEY);
    }

    public void error(String var1, Throwable var2) {
        MDC.put(ROBOT_KEY, robotName);
        logger.error(var1, var2);
        MDC.remove(ROBOT_KEY);
    }
}
